package com.lqk.jdk.decorator;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
 * @author lqk
 * @date 2021/12/5 18:46
 */
public class Decorator {
    public static void main(String[] args) throws IOException {
        /**
         * 说明
         *  1. InputStream 是抽象类，类似我们之前讲的Drink
         *  2. FileInputStream 是 InputStream 子类，类似我们前面的 LongBlack（单品咖啡）
         *  3. FilterInputStream 是 InputStream 子类，类似我们前面的 Decorator （修饰者）
         *  4. BufferedInputStream 是 FilterInputStream 子类，是具体的修饰者，类似 Milk，Soy等
         *  5. FilterInputStream 类有 protected volatile InputStream in; 即含有被装饰者
         *  6. 从上面分析得出，jdk的io体系中，就是使用装饰者模式
         */
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("d://a.txt"));
        bufferedInputStream.close();
    }
}
